package com.info.zhiduoduo.common.annotation;

import com.info.zhiduoduo.common.constants.system.ZddLogType;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;

import static java.lang.annotation.RetentionPolicy.RUNTIME;

/**
 * 标记 系统中要记录操作日志的接口，比如更新创客、企业、合伙人等信息的操作日志
 * <p> 配合各个业务端的{@code RequestBodyAspect} 在请求接口时使用。
 */
@Target({ElementType.METHOD})
@Retention(RUNTIME)
@Documented
public @interface ZddLog {

	/**
	 * 日志操作类型，更新，删除，插入等。默认为{@link ZddLogType#CREATE}
	 *
	 * @see ZddLogType
	 */
	int type() default ZddLogType.CREATE;

	/**
	 * 日志操作名称，默认为空
	 */
	String name() default "";

	/**
	 * 标记本次操作日志需要记录的entity，可以为空，也可以同一个接口里面记录多个entity。比如同时更新Maker，MakerAccount，MakerStudio的数据.
	 * <p> 新建、查询操作不需要设置
	 * <p> 更新、删除操作需要设置
	 */
	LogEntity[] entities() default {};
}
